package com.toonan.system.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;

import com.toonan.core.constant.WebplusCons;
import com.toonan.core.matatype.Dto;
import com.toonan.core.util.WebplusMongo;
import com.toonan.core.util.WebplusUtil;
import com.toonan.core.vo.PageResult;
import com.toonan.system.dao.DictDao;
import com.toonan.system.model.Dict;

/**
 * 
 * @ClassName:  DictService   
 * @Description:TODO
 * @author: 陈骑元（chenqiyuan@toonan.com)
 * @date:   2022年2月18日 下午10:59:23     
 * @Copyright: 2022 www.toonan.com Inc. All rights reserved. 
 * 注意：本内容仅限于广州市图南软件有限公司内部传阅，禁止外泄以及用于其他的商业目
 */
@Service
public class DictService {
	
	@Autowired
	private DictDao dictDao;
	
	/**
	 * 
	 * 简要说明：插入一个字典
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月19日 下午2:03:30 
	 * @param 说明
	 * @return 说明
	 */
	public boolean insert(Dict dict) {
		Dict dictDb=dictDao.insert(dict);
		if(WebplusUtil.isNotEmpty(dictDb.getDictId())) {
			return true;
		}
		return false;
	}
	/**
	 * 
	 * 简要说明：更新
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月19日 下午2:16:57 
	 * @param 说明
	 * @return 说明
	 */
	public boolean updateById(Dict dict) {
		
		return dictDao.updateById(dict);
	}
	
	/**
	 * 
	 * 简要说明：删除字典
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月19日 下午2:18:45 
	 * @param 说明
	 * @return 说明
	 */
	public boolean removeById(String id) {
		
		return dictDao.removeById(id);
	}
	/**
	 * 
	 * 简要说明：批量插入
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月19日 下午2:07:06 
	 * @param 说明
	 * @return 说明
	 */
	public boolean insertBatch(List<Dict> dictList) {
		
		return dictDao.insertBatch(dictList);
	}
	
	/**
	 * 
	 * 简要说明：查询单个
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月19日 下午2:12:28 
	 * @param 说明
	 * @return 说明
	 */
	public Dict findById(String id) {
		
		return dictDao.findById(id);
	}
	/**
	 * 
	 * 简要说明：分页查询
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月19日 下午1:55:14 
	 * @param 说明
	 * @return 说明
	 */
	public PageResult findPage(Dto pDto) {
		Query query=new Query();
    	WebplusMongo.eq(query,"dictIndexId",pDto);
    	WebplusMongo.like(query,"dictCode", pDto);
    	WebplusMongo.like(query,"dictValue", pDto);
    	WebplusMongo.withSortAsc(query, "sortNo");
    	PageResult pageResult=new PageResult(pDto);
    	return dictDao.findPage(query, pageResult);
	}
	
	/**
	 * 
	 * 简要说明：检查字典值在字典类型的唯一性
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月13日 上午10:08:08 
	 * @param 说明 paramKey 参数健
	 * @return 说明
	 */
	public boolean checkDictKeyUnion(String dictIndexId,String dictCode) {
	    Query query=WebplusMongo.eq("dictIndexId",dictIndexId);
	    WebplusMongo.eq(query,"dictCode", dictCode);
		return dictDao.count(query)>0;
	}
	
	
	/**
	 * 
	 * 简要说明：检查字典类型是否存在只读字典
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月19日 下午2:31:06 
	 * @param 说明
	 * @return 说明
	 */
	public boolean checkExistsReadDict(String dictIndexId) {
		Query query=WebplusMongo.eq("dictIndexId",dictIndexId);
	    WebplusMongo.eq(query,"editMode",WebplusCons.EDITMODE_READ);
	    
	    return dictDao.count(query)>0;
	}
	 /**
	  * 
	  * 简要说明：通过id批量查找
	  * 编写者：陈骑元（chenqiyuan@toonan.com）
	  * 创建时间： 2022年2月19日 下午2:21:08 
	  * @param 说明
	  * @return 说明
	  */
     public List<Dict> findBatchIds(List<String> idList){
		
		return dictDao.findBatchIds(idList);
	}
     
     /**
	  * 
	  * 简要说明：通过id批量查找
	  * 编写者：陈骑元（chenqiyuan@toonan.com）
	  * 创建时间： 2022年2月19日 下午2:21:08 
	  * @param 说明
	  * @return 说明
	  */
     public boolean  removeBatchIds(List<String> idList){
		
		return dictDao.removeBatchIds(idList);
	}
    /**
     * 
     * 简要说明：根据字典类型编号进行字典删除
     * 编写者：陈骑元（chenqiyuan@toonan.com）
     * 创建时间： 2022年2月19日 下午2:34:58 
     * @param 说明
     * @return 说明
     */
    public boolean removeByDictIndexId(String dictIndexId) {
    	Query query=WebplusMongo.eq("dictIndexId", dictIndexId);
    	return dictDao.remove(query);
    }
}
